﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace LI4
{
    public partial class EditarAnuncio : Form
    {
        public Business.Anuncio anuncio;
        Business.Utilizador utilizador;

        public EditarAnuncio(Business.Anuncio an,Business.Utilizador ut)
        {
            InitializeComponent();
            anuncio = an.clone();
            utilizador = ut.clone() ;
        }

       

        private void EditarAnuncio_Load(object sender, EventArgs e)
        {
           
            nomeTB.Text = utilizador.Nome;
            emailTB.Text = utilizador.Mail;
            telefoneTB.Text = utilizador.Telefone.ToString();

            int l = 0, d = 0, a = 0, ll = 0, dd = 0, aa = 0;

            foreach (Business.Distrito dist in Program.distritos)
            {
                distritoCB.Items.Add(dist);
                if (dist.Nome.Equals(anuncio.Localidade.Distrito.Nome)) dd = d;
                d++;
            }
            distritoCB.SelectedIndex = dd;


            /*foreach (Business.Localidade local in Program.localidades)
            {
                if (local.Distrito.Nome.Equals(anuncio.Localidade.Distrito.Nome))
                {
                    localidadeCB.Items.Add(local);
                    l++;
                }
                if (local.Nome.Equals(anuncio.Localidade.Nome)) ll = l;
                
            }
            localidadeCB.SelectedIndex = ll;*/

            foreach (Business.Area area in Program.areas)
            {
                areaCB.Items.Add(area);
                if (area.Nome.Equals(anuncio.Area.Nome)) aa = a;
                a++;
            }
            areaCB.SelectedIndex = aa;
            
            
            moradaTB.Text = anuncio.Rua;
            cp1TB.Text = anuncio.CodPostal.Substring(0, 4);
            cp2TB.Text = anuncio.CodPostal.Substring(3, 3);

            descricaoTB.Text = anuncio.Descricao;
        }

        private void distritoCB_SelectedIndexChanged(object sender, EventArgs e)
        {
            string distrito = distritoCB.Text.Trim();

            localidadeCB.Text = "";
            localidadeCB.Items.Clear();

            int ll = 0, l = 0;
            foreach (Business.Localidade local in Program.localidades)
            {
                if (local.Distrito.Nome.Equals(anuncio.Localidade.Distrito.Nome))
                {
                    localidadeCB.Items.Add(local);
                    l++;
                }
                if (local.Nome.Equals(anuncio.Localidade.Nome)) ll = l;

            }
            localidadeCB.SelectedIndex = ll-1;

            

            //mapa 
            object empty = System.Reflection.Missing.Value;
            axWebBrowser1.Navigate(@"C:/Documents and Settings/fernando/My Documents/Visual Studio 2008/Projects/Li4SVN/Google Maps/ggmps.html");
            mshtml.IHTMLDocument2 doc = axWebBrowser1.Document as mshtml.IHTMLDocument2;
        }

        private void criarB_Click(object sender, EventArgs e)
        {
            Business.Area area = (Business.Area)areaCB.SelectedItem;
            Business.Localidade local = (Business.Localidade)localidadeCB.SelectedItem;
            string descricao = descricaoTB.Text.Trim();
            string morada = moradaTB.Text.Trim();
            string latitude = "0";
            string longitude = "0";
            string cod_postal = cp1TB.Text.Trim();
            cod_postal = String.Concat(cod_postal, cp2TB.Text.Trim());

            try
            {
                mshtml.IHTMLDocument2 doc = axWebBrowser1.Document as mshtml.IHTMLDocument2;
                mshtml.HTMLInputElement result = (mshtml.HTMLInputElement)doc.all.item("click_lat", 0);
                mshtml.HTMLInputElement result1 = (mshtml.HTMLInputElement)doc.all.item("click_long", 0);
                latitude = result.value.ToString();
                longitude = result1.value.ToString();
            }
            catch
            {
                MessageBox.Show(this, "Ocorreu um erro!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

            if (descricao.Length < 1) MessageBox.Show(this, "Campo Descricao inválido!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            else if (morada.Length < 1) MessageBox.Show(this, "Campo Email inválido!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            else if (local.Nome.Length < 1) MessageBox.Show(this, "Campo Nome inválido!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            else if (cod_postal.Length < 1) MessageBox.Show(this, "Campo Codigo Postal inválido!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            else
            {
                Business.Anuncio anuncio = new LI4.Business.Anuncio(0, area, utilizador.Login.Username, descricao, morada, local, cod_postal, latitude, longitude);
                int success = Business.GerirAnuncios.update(anuncio);
                if (success == Data.Ligacao.DBERROR)
                    MessageBox.Show(this, "Ocorreu um erro!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                else
                {
                    MessageBox.Show(this, "Anuncio editado com sucesso!", "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    this.Dispose();
                }
            }



        }

        private void axWebBrowser1_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
        {
            mshtml.IHTMLDocument2 doc = axWebBrowser1.Document as mshtml.IHTMLDocument2;
            mshtml.HTMLInputElement result = (mshtml.HTMLInputElement)doc.all.item("address", 0);
            Business.Localidade local = (Business.Localidade)localidadeCB.SelectedItem;
            if (moradaTB.Text.Length > 0 && localidadeCB.Text.Length > 0) result.value = moradaTB.Text.Trim() + ", " + local.Nome;

            mshtml.HTMLInputElement lathtml = (mshtml.HTMLInputElement)doc.all.item("click_lat", 0);
            mshtml.HTMLInputElement longhtml = (mshtml.HTMLInputElement)doc.all.item("click_long", 0);

            
            string lat = anuncio.Latitude.ToString();
            string lng = anuncio.Longitude.ToString();
            lat = lat.Replace(',', '.');
            lng = lng.Replace(',', '.');

            //passar para o html as coordenadas
            lathtml.value = lat;
            longhtml.value = lng;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult reply = MessageBox.Show(this, "Tem a certeza que deseja remover o anuncio?", "Inactivaçao", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
            if (reply == DialogResult.Yes)
            {
                
                int success = Business.GerirAnuncios.remover(anuncio);
                if (success == Data.Ligacao.DBERROR)
                {
                    MessageBox.Show(this, "Erro na base de dados!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                   
                    MessageBox.Show(this, "Anuncio removido do sistema!", "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    this.Dispose();
                }
            }    
        }
    }
}
